package hn.info.hockeynews.helpers;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import android.os.AsyncTask;
import android.util.Log;

public class JSONParser extends AsyncTask<String, String, JSONObject> {
	static InputStream is = null;
	static JSONObject jObj = null;
	static String json = "";
	  
	List<NameValuePair> postparams= new ArrayList<NameValuePair>();
    String URL=null;
    
	public JSONParser(String loginURL, List<NameValuePair> params) {
		this.URL = loginURL;
		postparams = params;
	}
	
	/**
	 * get json data from json source on server
	 * 
	 * */
	@Override
	protected JSONObject doInBackground(String... params) {
		try {
			DefaultHttpClient httpClient = new DefaultHttpClient();
		    HttpPost httpPost = new HttpPost(URL);
		    httpPost.setEntity(new UrlEncodedFormEntity(postparams));
		    
		    HttpResponse httpResponse = httpClient.execute(httpPost);
		    HttpEntity httpEntity = httpResponse.getEntity();
		    is = httpEntity.getContent();
		}
		catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		catch (ClientProtocolException e) {
			e.printStackTrace();
		}
		catch (IOException e) {
			e.printStackTrace();
		}
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
			StringBuilder sb = new StringBuilder();
		    String line = null;
		    while ((line = reader.readLine()) != null) {
		    	sb.append(line + "\n");
		    }
		    is.close();
		    json = sb.toString();
		}
		catch (Exception e) {
			Log.e("Buffer Error", "Error converting result " + e.toString());
		}
		// try parse the string to a JSON object
		try {
			jObj = new JSONObject(json);
		}
		catch (JSONException e) {
			Log.e("JSON Parser", "Error parsing data " + e.toString());
		}
		return jObj;   
	}
}
